home *** CD-ROM | disk | FTP | other *** search
-
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include <glib.h>
- #include "land.h"
-
- /* #include "..\lib.h" */
-
- int calchk( int mx, int my, int x, int y, int *mosx, int *mosy)
- { double wa;
-
- if (xychk16(mx, my, x, y) == 1) {
- calcu(x, y, 1);
- while ((MOS_rdpos(&mx, &my) & 0x01) == 1);
- if (xychk16(mx, my, x, y) == 1) calc( mosx, mosy, &wa);
- calcu(x, y, 0);
- return(1);
- }
- return(0);
- }
-
- void mbox(int x1, int y1, int x2, int y2)
- {
- line(x1, y1, x2, y2, PSET, col7, 2, 0xffff);
- line(x1, y1, x2, y2, PSET, col1, 1, 0xffff);
- line(x2+1, y1+6, x2+6, y2+6, PSET, col0, 2, 0xffff);
- line(x1+6, y2+1, x2, y2+6, PSET, col0, 2, 0xffff);
- return;
- }
-
- void menubox(int x1, int y1, int x2, int y2, char ttl[])
- {
- mbox(x1, y1, x2, y2);
- line(x1, y1, x2, y1+20, PSET, col1, 2, 0xffff);
- symbol_(x1+2, y1+2, ttl, 1,1, col14, 0 ,PSET);
- return;
- }
-
- void menucls(int x1, int y1, int x2, int y2)
- {
- line(x1+1, y1+21, x2-1, y2-1, PSET, col7, 2, 0xffff);
- }
-
- void helpbox(int x1, int y1, int x2, int y2, char ttl[])
- {
- mbox(x1, y1, x2, y2);
- line(x1, y1, x2, y1+20, PSET, col1, 2, 0xffff);
- symbol_(x1+2, y1+2, ttl, 1,1, col13, 0 ,PSET);
- return;
- }
-
- void helpbox2(int x1, int y1, int x2, int y2, char ttl[])
- {
- line(x1, y1, x2, y2, PSET, col7, 2, 0xffff);
- line(x1, y1, x2, y2, PSET, col1, 1, 0xffff);
- line(x1, y1, x2, y1+20, PSET, col1, 2, 0xffff);
- symbol_(x1+2, y1+2, ttl, 1,1, col13, 0 ,PSET);
- return;
- }
-
- void helpcls(int x1, int y1, int x2, int y2)
- {
- line(x1+1, y1+21, x2-1, y2-1, PSET, col7, 2, 0xffff);
- }
-
- /* input area 0,0,114,139 */
- void minpnb(int x0, int y0)
- {
- int bcl[16];
- int xx,yy;
- bcl[0] = col1;
-
- /* 影枠 影塗色 */
- /* hatch(5); */
- line(x0+10, y0+10, x0+114, y0+139, PSET, col0, 2, 0xffff);
-
- /* キーボード */
- line(x0+0,y0+0,x0+105,y0+130, PSET, col7, 2, 0xffff);
- line(x0+0,y0+0,x0+105,y0+130, PSET, col1, 1, 0xffff);
- line(x0+105,y0+0,x0+108,y0+3, PSET, col1, 0, 0xffff);
- line(x0+108,y0+3,x0+108,y0+133, PSET, col1, 0, 0xffff);
- /* line(x0+108,y0+133,x0+105,y0+130, PSET, col1, 0, 0xffff); */
- line(x0+108,y0+133,x0+3,y0+133, PSET, col1, 0, 0xffff);
- line(x0+3,y0+133,x0+0,y0+130, PSET, col1, 0, 0xffff);
-
- /* キーボード外枠塗色 */
- drmode(PSET);
- paint(x0+106,y0+10, 1, col1, 1, bcl);
- paint(x0+10,y0+131, 1, col1, 1, bcl);
-
- /* データ表示窓 */
- line(x0+5,y0+5,x0+100,y0+25, PSET, col1, 2, 0xffff);
- line(x0+5,y0+5,x0+100,y0+25, PSET, col8, 1, 0xffff);
- /* キー作成 */
- xx=x0+5; yy=y0+30;
- box(xx, yy);
- symbol_(xx+2, yy+2, "7", 1,1, col15,0,PSET);
- xx=x0+30; yy=y0+30;
- box(xx, yy);
- symbol_(xx+2, yy+2, "8", 1,1, col15,0,PSET);
- xx=x0+55; yy=y0+30;
- box(xx, yy);
- symbol_(xx+2, yy+2, "9", 1,1, col15,0,PSET);
- xx=x0+5; yy=y0+55;
- box(xx, yy);
- symbol_(xx+2, yy+2, "4", 1,1, col15,0,PSET);
- xx=x0+30; yy=y0+55;
- box(xx, yy);
- symbol_(xx+2, yy+2, "5", 1,1, col15,0,PSET);
- xx=x0+55; yy=y0+55;
- box(xx, yy);
- symbol_(xx+2, yy+2, "6", 1,1, col15,0,PSET);
- xx=x0+5; yy=y0+80;
- box(xx, yy);
- symbol_(xx+2, yy+2, "1", 1,1, col15,0,PSET);
- xx=x0+30; yy=y0+80;
- box(xx, yy);
- symbol_(xx+2, yy+2, "2", 1,1, col15,0,PSET);
- xx=x0+55; yy=y0+80;
- box(xx, yy);
- symbol_(xx+2, yy+2, "3", 1,1, col15,0,PSET);
- xx=x0+5; yy=y0+105;
- box(xx, yy);
- symbol_(xx+2, yy+2, "0", 1,1, col15,0,PSET);
- xx=x0+30; yy=y0+105;
- box(xx, yy);
- symbol_(xx+2+6, yy+2, ".", 1,1, col15,0,PSET);
- xx=x0+80, yy=y0+30;
- box(xx, yy);
- symbol_(xx+2, yy+2, "←", 1,1, col15,0,PSET);
- xx=x0+80, yy=y0+55;
- box(xx, yy);
- symbol_(xx+2, yy+2, "-", 1,1, col15,0,PSET);
- xx=x0+55, yy=y0+105;
- line(xx, yy, xx+45, yy, PSET, col15, 0, 0xffff);
- line(xx, yy, xx, yy+20, PSET, col15, 0, 0xffff);
- line(xx, yy+20, xx+45, yy+20, PSET, col8, 0, 0xffff);
- line(xx+45, yy+20, xx+45, yy, PSET, col8, 0, 0xffff);
- symbol_(xx+4, yy+2, "実", 1,1, col15,0,PSET);
- symbol_(xx+25, yy+2, "行", 1,1, col15,0,PSET);
- return;
- }
-
-
- /* xy check 16dot return( yes=1, n0=0) */
- int xychk16(int x, int y, int x1, int y1)
- {
- return(xychk(x, y, x1, y1, x1+15, y1+15));
- }
-
- /* xy check 8dot return( yes=1, no=0) */
- int xychk8(int x, int y, int x1, int y1)
- {
- return(xychk(x, y, x1, y1, x1+7, y1+7));
- }
-
- void msgset2(int x, int y, char msg[], int col)
- {
- symbol(x, y, msg, 1,1, col,0,PSET);
- }
-
- void msgset(int x, int y, char msg[], int col)
- {
- symbol_(x, y, msg, 1,1, col,0,PSET);
- }
-
-
- /* input num set and print */
- void numset(int x, int y, int nn, char nline[], int *ncnt, int *pf)
- {
- if ((nn == '-' && *ncnt != 0) || (nn != 8 && *ncnt == 11) || ( nn == '.' && *pf != 0)) {
- putchar('\7'); return; /* error */
- }
- if ( nn == 8 ) {
- if (*ncnt == 0) putchar('\7'); /* error */
- else {
- (*ncnt)--;
- symbol(x+8+8*(*ncnt),y+8,nline+(*ncnt), 1, 2, col1, 0, PSET);
- if (nline[*ncnt] == '.') *pf = 0; /* flag clear */
- nline[*ncnt] = '\0';
- }
- return;
- }
- if (nn == '.') *pf = 1; /* flag set */
- nline[*ncnt] = nn;
- symbol(x+8+8*(*ncnt),y+8,nline+(*ncnt), 1, 2, col14, 0, PSET);
- (*ncnt)++;
- return;
- }
-
- /* mouse input */
- double minpn(int x, int y, double pnum)
- {
- int ncnt = 0, pf = 0, mx, my, nn, xw, yw;
- char nline[12], i;
- unsigned ddadr[2];
- unsigned char page;
- char buf[8052];
-
- MOS_disp(1); /* mouse disp off */
-
- BSETDATAADR(ddadr, buf);
- page = 0;
- GDS_getBlock(ddadr[0], ddadr[1], page, x, y, x+114, y+139);
-
- for (i=0; i <12; i++) nline[i]=0;
- minpnb(x,y);
- MOS_horizon(x, x+105);
- MOS_vertical(y, y+130);
- MOS_disp(0); /* mouse disp on */
-
- while (1) {
- nn = 0;
- while ((MOS_rdpos(&mx, &my) & 0x01) == 0);
- for (i=1; i==1; i++) {
- if (xychk(mx, my, xw=x+5, yw=y+30, x+25, y+50) == 1) { nn = '7'; break; }
- if (xychk(mx, my, xw=x+30, yw=y+30, x+50, y+50) == 1) { nn = '8'; break; }
- if (xychk(mx, my, xw=x+55, yw=y+30, x+75, y+50) == 1) { nn = '9'; break; }
- if (xychk(mx, my, xw=x+5, yw=y+55, x+25, y+75) == 1) { nn = '4'; break; }
- if (xychk(mx, my, xw=x+30, yw=y+55, x+50, y+75) == 1) { nn = '5'; break; }
- if (xychk(mx, my, xw=x+55, yw=y+55, x+75, y+75) == 1) { nn = '6'; break; }
- if (xychk(mx, my, xw=x+5, yw=y+80, x+25,y+100) == 1) { nn = '1'; break; }
- if (xychk(mx, my, xw=x+30, yw=y+80, x+50,y+100) == 1) { nn = '2'; break; }
- if (xychk(mx, my, xw=x+55, yw=y+80, x+75,y+100) == 1) { nn = '3'; break; }
- if (xychk(mx, my, xw=x+5, yw=y+105,x+25,y+125) == 1) { nn = '0'; break; }
- if (xychk(mx, my, xw=x+30, yw=y+105,x+50,y+125) == 1) { nn = '.'; break; }
- if (xychk(mx, my, xw=x+80, yw=y+30, x+100,y+50) == 1) { nn = 8; break; } /* back spase */
- if (xychk(mx, my, xw=x+80, yw=y+55, x+100,y+75) == 1) { nn = '-'; break; }
- xw = 0; yw = 0;
- }
- if (xychk(mx, my, x+55, y+105,x+100,y+125) == 1) {
- xw=x+55, yw=y+105;
- line(xw, yw, xw+45, yw, PSET, col8, 0, 0xffff);
- line(xw, yw, xw, yw+20, PSET, col8, 0, 0xffff);
- line(xw, yw+20, xw+45, yw+20, PSET, col15, 0, 0xffff);
- line(xw+45, yw+20, xw+45, yw, PSET, col15, 0, 0xffff);
- MOS_horizon(0, 639);
- MOS_vertical(0, 399);
- GDS_putBlock(ddadr[0], ddadr[1], page, x, y, x+114, y+139, PSET);
- if (nline[0] == '\0') return(pnum);
- return(atof(nline));
- /*
- line(xw, yw, xw+45, yw, PSET, col15, 0, 0xffff);
- line(xw, yw, xw, yw+20, PSET, col15, 0, 0xffff);
- line(xw, yw+20, xw+45, yw+20, PSET, col8, 0, 0xffff);
- line(xw+45, yw+20, xw+45, yw, PSET, col8, 0, 0xffff);
- */
- } else {
- if (xw != 0) box2(xw, yw);
- if (nn != 0) numset(x, y, nn, nline, &ncnt, &pf);
- else putchar('\7');
- while ((MOS_rdpos(&mx, &my) & 0x01) == 1);
- if (xw != 0) box(xw, yw);
- }
- }
- }
-
- /* end of file */